A disk drive is a data storage device that stores digital data in tracks on the surface of a data storage disk. Data is read from or written to a track of the disk using a transducer, which includes a read element and a write element, that is held close to the track while the disk spins about its center at a substantially constant angular velocity. To properly locate the transducer near the desired track during a read or write operation, a closed-loop servo scheme is generally implemented. The servo scheme uses servo data read from the disk surface to align the transducer with the desired track. The servo data is generally written to the disk using a servo track writer (STW). However, there has been a movement towards having the disk drive self-servo write some portion or, in some cases, all of the servo data.
FIG. 1 illustrates a disk drive, generally designated 10, with which the present invention may be used. The disk drive comprises a disk 12 that is rotated by a spin motor 14. The spin motor 14 is mounted to a base plate 16. An actuator arm assembly 18 is also mounted to the base plate 16.
The actuator arm assembly 18 includes a transducer 20 (having a write head and a read head) mounted to a flexure arm 22 which is attached to an actuator arm 24 that can rotate about a bearing assembly 26. The actuator arm assembly 18 also contains a voice coil motor 28 which moves the transducer 20 relative to the disk 12. The spin motor 14, voice coil motor 28 and transducer 20 are coupled to a number of electronic circuits 30 mounted to a printed circuit board 32. The electronic circuits 30 typically include a read channel chip, a microprocessor-based controller and a random access memory (RAM) device.
The disk drive 10 may include a plurality of disks 12 and, therefore, a plurality of corresponding actuator arm assemblies 18. However, it is also possible for the disk drive to include a single disk 12 as shown in FIG. 1.
FIG. 2 is a simplified diagrammatic representation of a top view of a disk 12 having a surface 42 which has been formatted to be used in conjunction with a sectored servo system (also known as an embedded servo system). As illustrated in FIG. 2, the disk 12 includes a plurality of concentric tracks 44a-44h for storing data on the disk's surface 42. Although FIG. 2 only shows a relatively small number of tracks (i.e., 8) for ease of illustration, it should be appreciated that typically tens of thousands of tracks are included on the surface 42 of a disk 12.
Each track 44a-44h is divided into a plurality of data sectors 46 and a plurality of servo sectors 48. The servo sectors 48 in each track are radially aligned with servo sectors 48 in the other tracks, thereby forming servo wedges 50 which extend radially across the disk 12 (e.g., from the disk's inner diameter 52 to its outer diameter 54).
In an ideal disk drive system, each of the concentric tracks 44a-44h is centered about a true or actual center 60 of the disk 12. Furthermore, in an ideal disk drive system, the axis of rotation of the disk is aligned with the true center 60 of the disk 12.
In an actual system, however, the axis of rotation of the disk may not correspond with the true center 60 of the disk 12. For example, the axis of rotation may correspond with point 62, as illustrated in FIG. 2. Accordingly, the circular tracks may have an eccentric shape relative to the axis of rotation. Positioning errors created by the eccentric shape of the tracks are known as repeatable runout (RRO) and may occur at a multiple of the frequency of rotation of the disk (e.g., 1f, 2f, 3f, etc.).
In addition to a lack of correspondence between the true center 60 and the axis of rotation, there are many other reasons for repeatable runout. For example, repeatable runout may be due to disk slip, disk wobbling relative to the axis of rotation, disk distortions due to clamping force changes or thermal changes, and bearing irregularities.
Servo sectors 48 provide the transducer 20 with information concerning its position over the magnetic disk 12. More particularly, the servo sectors 48 provide information to the transducer 20 concerning the identity of the track 44 and servo sector 48 over which the transducer 20 is flying, and concerning the position of the transducer with respect to the centerline of the track 44.
When a host computer requests that data be read from or written to a particular data sector 46 (or data sectors) of a track 44, the transducer 20 must be moved to the track 44 and then must be positioned at a predetermined location relative to the centerline of the track 44 before a data transfer can take place. For ease of illustration, it will be assumed that the transducer should be placed on the track centerline in order to read from and write to the disk.
FIG. 3 illustrates a typical servo pattern 300 stored within the servo portion of a servo sector 48 for use in centering a transducer 20 on a desired track 44. The servo pattern 300 includes a plurality of servo bursts 304, 308, 312 and 316 that define the centerlines 320a-c of the tracks 44 of the disk 12. The bursts 304, 308, 312 and 316 are divided into A bursts 304, 312 and B bursts 308, 316 that are each approximately (but arc not limited to) a track-width wide and that alternate across the disk surface. The boundary between an A burst and an adjacent B burst (e.g., A burst 312 and B burst 308) defines the centerline (e.g., centerline 320b) of a track 44 on the disk 12.
To center the transducer 20 using the A and B bursts, the transducer 20 is first moved to the desired track 44 during a seek operation and, once there, is allowed to read the A and B bursts on the desired track 44. The signal magnitudes resulting from reading the A and B bursts are then combined (such as by subtracting the B burst magnitude from the A burst magnitude) to achieve an error signal, known as the position error signal (PES). The PES indicates the distance between the center of the transducer 20 and the centerline (e.g., centerline 320b) of the desired track. The PES signal is used by the disk drive 10 to change the position of the transducer 20 to one that is closer to the desired (centered) position. This centering process is repeated for each successive servo sector on the track until the requested read/write operation has been performed in the appropriate data sector 46 of the disk 12.
In order to properly write and read to the track centerline, it is important to determine and compensate for the repeatable runout (RRO) at the frequency of rotation of the disk (or one or more harmonic frequencies), so that the transducer follows, for example, the eccentric shape of the track. Failure to compensate for the RRO may result in oscillation of the transducer at the frequency of rotation of the disk (or one or more of the RRO harmonic frequencies).
One well-known technique for compensating for RRO is depicted in FIG. 4. The technique shown in FIG. 4 uses a single frequency Discrete Fourier Transform (DFT) in order to compensate for the RRO.
In FIG. 4, block 410 represents a compensator (e.g., located in a digital signal processor), block 420 represents the plant, and rro_1f represents the repeatable runout at the frequency of rotation of the disk. It should be noted that the RRO corresponding to a multiple of the frequency of rotation of the disk may be injected into the loop and that the RRO due to the frequency of rotation of the disk is only shown as an example in the figure.
Block 430 is a first integrator loop. An integrated sine term and an integrated cosine term are output for a revolution of the disk from the first integration loop and are fed into blocks 432 and 434, respectively, which represent a traditional Discrete Fourier Transform (DFT).
The output of blocks 432 and 434 are fed into a linear converge gain block 440, which includes loop gain and loop phase adjustments represented by Ksin and Kcos, where the selection of constant K is arbitrary. In the linear gain converge block 440, g represents the converge gain of the cancellation system and will be discussed in more detail below.
The output of the linear converge gain block 440 represents feedforward values in the terms of sine and cosine vector values, and are fed into second integrator loop 450. These values are added to the prior values, represented by sin_rro_upd and cos_rro_upd, wherein the update rate for second integrator loop 450 is once per revolution.
The outputs of the second integrator loop 450 (which are sine and cosine vector values) are then recovered as a time-domain signal, which is the compensation value rro_comp (a sine wave) that is applied at the output of the control. Accordingly, in a perfect system, such value will be used to compensate for RRO at the frequency of the disk rotation (or some multiple of the frequency of the disk rotation), so that the track is accurately followed.
Returning now to the linear converge gain block 440, as mentioned above, g represents the converge gain of the cancellation system, with the constraint that 0≦g≦2. Importantly, in prior systems, g has been selected to be a constant. The selection of g has been somewhat arbitrary.
On one hand, if g is chosen to be close to one, a fast converge time is achieved when initially settling on track and rapid tracking. However, the drawback of choosing g to be close to one is that adjacent frequency components may be significantly amplified.
On the other hand, choosing a smaller value for g can reduce the amplification of the adjacent frequency components, while achieving decent RRO attenuation. However, the drawback is that the converge time is relatively slow when initially settling on track and slow tracking as the RRO is changing. In both cases, performance will be sacrificed.
With reference to FIG. 4, the sine and cosine terms of the repeatable runout for the first harmonic may be represented by the following two equations:                               Runout_Cosine          ⁢                      _Coefficients            current                          =                ⁢                              Runout_Cosine            ⁢                          _Coefficients              previous                                +                                                ⁢                  K          ⁢                                           ⁢          cos          *          g          *                      2            /            N                    *                                    ∑                              k                =                0                                            N                -                1                                      ⁢                                                   ⁢                                          perr                ⁡                                  (                  k                  )                                            *                                                                      ⁢                  cos          ⁡                      (                          2              ⁢              π              *                              k                /                N                                      )                                                            Runout_Sine          ⁢                      _Coefficients            current                          =                ⁢                              Runout_Sine            ⁢                          _Coefficients              previous                                +                                                ⁢                  K          ⁢                                           ⁢          sin          *          g          *                      2            /            N                    *                                    ∑                              k                =                0                                            N                -                1                                      ⁢                                                   ⁢                                          perr                ⁡                                  (                  k                  )                                            *                                                                      ⁢                  sin          ⁡                      (                          2              ⁢              π              *                              k                /                N                                      )                              where perr(k) is the position error, N is the number of servo sectors, g is the converge gain, K a constant and k is an index.
Accordingly, it would be desirable to develop a method and apparatus for applying repeatable runout compensation using a converge gain g, which results in a relatively fast convergence time and which does not unduly amplify adjacent frequency components.